;;生产随机数,使用公式ax+b(mod n)
(define (rand-update y)
  (remainder (+ 4 (* 3 y))
             5))

;;维持一个局部状态变量x
(define rand
  (let ((x 2))
    (lambda ()
            (set! x (rand-update x))
            x)))

;;;test;;
;> (rand)
;4
;> (rand)
;1
;> (rand)
;2
;> (rand)


;;;;;;;;;;;;;;;;;;;;;;
(define rand
  (let ((x 2))
    (define (rand-update y)
      (remainder (+ 4 (* 3 y)) 
                 5))
    (lambda ()
            (set! x (rand-update x))
            x)))
